Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Модификация: orphus.minimal. (Дмитрий Котеров)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Fri Jul 29, 2005 11:34 am (написано за 2 минуты)
   Post subject: Модификация: orphus.minimal.
Reply with quote

Следующая переписка состоялась с Alexander Netkachev.


> Alexander Netkachev:
> Функциональность кода со стороны пользователя не изменилась, но в
> скрипте некоторые части значительно изменены. Например убрана вся
> логика с translations, изменено получение selection, переделана
> инициализация (это то, что я помню).

Dmitry Koterov:
Ну и как же мне теперь посмотреть, что именно изменилось?

Кстати, учитывайте, что кроссбраузерность Орфуса отлаживалась
очень долго. То, что Вы что-то изменили, - замечательно, но Вы
уверены, что после этих правок Орфус продолжить работать в тех
браузерах, где он работал до этого?

> Идея обфускатора, который просто сократил бы имена переменных, мне
> приходила в голову. Но обфускатор не даст такого сокращения кода - я
> думаю, что он уменьшит объем кода на 30-40%, но не больше. (Кстати, я
> попробовал
> www.javascript-source.com/javascript-obfuscator.html
> - он умеет менять имена - результат 6kb).
> Так что я решил, что наиболее подходящим решением будет анализ
> изменений в Orphus и адаптация их для Orphus.minima, если Вы, конечно,
> не против, что бы проект minima жил дальше - Orphus Ваше изобретение и
> я хотел бы спросить Вас об этом.
Знаете, что Вы сделали? Вы, фактически, отщепили от проекта
отдельную и совершенно независимую ветку, которую почти
невозможно объединить с основной веткой, которую трудно
отлаживать, которую сложно развивать и, наконец, почти не имеющую
обратной связи от багрепортов пользователей. Единственное ее
достоинство - это сокращение объема кода, остальное - сплошные
минусы. Если Вы считаете все это правильным, то ОК. Но я все же
придерживаюсь противоположного мнение.


>> > Хочу рассказать, что я сделал на основе Orphus модификацию
>> > для блогов (blogger, livejournal, etc). Я значительно уменьшил
>> > код, оставил информацию о Вашем авторстве, добавил немного о
>> > своем и назвал результат Orphus.minima.
>>
>> > Вы бы не могли посмотреть на сие чудо на страницах
>> > pronote.blogspot.com/ и
>> > progarts.blogspot.com/. Мне очень интересно Ваше мнение.
>>
>> Вы что-то меняли в функциональности, или же просто уменьшили
>> размер кода за счет сокращения длины идентификаторов?
>>
>> Если второе, то - что же, очень хорошо. Однако есть один большой
>> минус: код в таком виде становится совершенно нечитабельным и
>> неотлаживаемым, а потому - сильно затрудняется создание новых
>> версий Орфуса и исправление ошибок в старых. Мне легкость
>> поддержки важнее, чем объем кода (тем более, что стандартное
>> исполнение Орфуса в виде IFRAME заставляет браузер кэшировать
>> код, но даже если кэш пуст, то скорость загрузки страницы все
>> равно практически не уменьшается - за счет IFRAME как раз).
>>
>> Вот если бы Вы написали автоматический скрипт-конвертер, которому
>> на вход подают "длинный" скрипт, а он на выходе дает
>> "короткий"...
Back to top
View user's profile Send private message Send e-mail
Александр Неткачев
Заглянувший



Joined: 27 Jul 2005
Posts: 1
Карма: 0
   поощрить/наказать

Location: Украина, Крым, Симферополь

PostPosted: Fri Jul 29, 2005 9:39 pm (спустя 10 часов 5 минут; написано за 25 минут 11 секунд)
   Post subject:
Reply with quote

Quote:
Ну и как же мне теперь посмотреть, что именно изменилось?
Основное измение концептуальное: программу можно использовать на сайте без создания дополнительного HTML файла.
Соответственно весь JavaScript и форма работают теперь в контексте страницы и это повлекло за собой исправление обращения к parent из оригинального скрипта Orphus. В частности, было исправлено получение Selection.

В сокращении кода применены следующие подходы:

1. Форма отправки генерируется следующим методом:
Code (JavaScript): скопировать код в буфер обмена
var a={version:"3.4", email:"", subject:N, charset:"",
  to:"Пользователь Orphus", ref:"", c_pre:"", c_sel:"", c_suf:"", c_pos:"", c_tag1:"", c_tag2:"", nostat:""};
for(k in a) {
  var z = d.createElement('input');
  z.name = k;
  z.value = a[k];
  z.type = 'hidden';
  R[k]=P.appendChild(z);
}
2. Для обращения к document, window, форме отправки и картинки используются однобуквенные shortcuts у класса orphus.
3. Удалены все комментарии, кроме того, который содержит информацию о авторстве.
4. По возможности, переменные определяются в одном блоке var.
5. По возможности, обращения к методам вида obj.method() заменены на m:"method", obj[m]().
6. Убраны переменные с сообщениями.
7. Подкоррекстировано использование with(this){...} где это давало уменьшение размера.
8. Regexps задаются не через new RegExp(), а через //.
Может еще несколько незначительных оптимизаций, но это главные.
Общая функциональность блоков doSend, orphus_thanks, onkeypress изменена незначительно, набор функций остался тот-же.
Quote:
Кстати, учитывайте, что кроссбраузерность Орфуса отлаживалась
очень долго. То, что Вы что-то изменили, - замечательно, но Вы
уверены, что после этих правок Орфус продолжить работать в тех
браузерах, где он работал до этого?
Конечно не уверен :-) Скорее всего, он не будет работать во всех броузерах, где работал. Но об этом чуть позже.
Quote:
Знаете, что Вы сделали? Вы, фактически, отщепили от проекта
отдельную и совершенно независимую ветку, которую почти
невозможно объединить с основной веткой, которую трудно
отлаживать, которую сложно развивать и, наконец, почти не имеющую
обратной связи от багрепортов пользователей. Единственное ее
достоинство - это сокращение объема кода, остальное - сплошные
минусы. Если Вы считаете все это правильным, то ОК. Но я все же
придерживаюсь противоположного мнение.
Да, в общем, я это знаю. Но это решение является следствием того, что я очень хотел добавить Orphis на блоге и, по возможности, уменьшить нужный для этого код, что бы страница загружалась быстрее. Возможно, если Вы со временем модифицируете Orphus так, что бы я смог использовать его без создания дополнительного HTML в моей модификации отпадет необходимость.

В общем, я предлагаю остановиться на следующем: давайте немного подождем. Как говориться, какая разница, сколько в проекте надостатков и под какими броузерами он не работает, если он никому не нужен :-) Если он не будет пользоваться популярностью, то мой блог останется единственным, на котором находится Orphus.Minima.
Если же он будет пользоваться успехом, то и с броузерами разными я его оттестирую и с багами справлюсь. И если аналогичная бага будет и в Orphus, то я, конечно, пришлю соответствующий фикс :-)

Пойдет?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Fri Jul 29, 2005 9:46 pm (спустя 6 минут; написано за 47 секунд)
   Post subject:
Reply with quote

Александр Неткачев wrote:
Regexps задаются не через new RegExp(), а через //.
Вот это, кстати, зря. В старых браузерах будет синтаксическая ошибка - они не понимают оператор //, даже если до него не доходит управление в коде. А с RegExp - все корректно.

ОК.
Back to top
View user's profile Send private message Send e-mail
Бякин
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sun Jan 29, 2006 3:06 am (спустя 5 месяцев 30 дней 5 часов 20 минут; написано за 5 минут 36 секунд)
   Post subject:
Reply with quote

В чём я все-таки вижу один недостаток(хотя такой подход убрал пару недостатков), так это в том, что орфус грузится не из фрейма, поэтому он воспринимается как часть страницы и не может быть прокеширован отдельно., а когда орфус грузится из фрейма, мы его можем прокешировать на несколько часов, и он больше не будет грузиться вновь с каждой посещаемой страницей.
Ну и еще одно преимущество фреймового метода, - орфус можно обжать GZip'ом, не в зависимости от того, какой тип контента, в текстовом или бинарном виде выводится читаемая страница.
Back to top
Display posts from previous:   
This forum is locked: you cannot post, reply to, or edit topics.   This topic is locked: you cannot edit posts or make replies. All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You can post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You can attach files in this forum. You can download files in this forum.
XML